Description:
SDMC detects if all subclasses of a class vary only in methods that return constant data. In such cases, it is suggested to change the methods to superclass fields and eliminate the subclasses.
Incorrect:
abstract class Person {
protected abstract bool IsMale();
protected abstract char GetCode();
}
class Male : Person {
protected override bool IsMale() {
return true;
}
protected override char GetCode() {
return 'M';
}
}
class Female : Person {
protected override bool IsMale() {
return false;
}
protected override char GetCode() {
return 'F';
}
}
Correct:
class Person {
private bool isMale;
private char code;
protected bool IsMale() {
return isMale;
}
protected char GetCode() {
return code;
}
}
Refactoring: